/*
  typescript 中函数接口类型约束 
    前面学习了属性接口  主要是用来约束json字符串的  

    函数类型接口
      对方法传入的参数以及返回值进行约束
*/
interface myFun {
  // 以下就表示定义了一个函数接口
  /*
    规定了使用这个接口的函数必须传递两个参数 参数类型都必须是string类型  并且函数的返回值是string
  */

  (name: string, sex: string): string
}

let clientInfo: myFun = function (a1: string, a2: string): string {
  return `${a1}的性别是${a2}`
}

console.log(clientInfo('Jimmy', 'man')) // Jimmy的性别是man

// 报错 不符合函数类型的接口返回值的约束
// let otherInfo: myFun = function (a1: string, a2: string): number { }

// 报错  因为不符合函数接口的 形参类型
// let otherInfoss: myFun = function (a1: number, a2: string):string { }

/*
  总结 - - 定义了函数的接口以后， 形参个数 形参类型，返回值类型都必须要保持一致
*/
